Some standards for encoding and decoding videos (e.g., ITU-T H.264/AVC video coding standard) use block-based coding processes. In these processes, to compress a video sequence, which consists of several frames of pictures, a frame is divided into blocks (e.g., 4×4, 8×8, 16×16, 32×32, or 64×64 blocks of pixel data). In this way, the task of encoding the whole video sequence is broken down into encoding each block, where blocks within a frame are encoded in a certain order (e.g., raster order). The process of encoding a block includes performing a transform (e.g., the discrete cosine transform (DCT)). In many cases, the data being transformed is not the actual pixel data, but is residual data following a prediction operation. For example, to encode a particular block of pixels (called the “current block”), a prediction of the same size (called the “reference block”) is derived based on reconstruction of a block that was previously encoded. The reference block can come from a different frame (called “inter prediction”) or the same frame (called “intra prediction”). The reconstruction involves decoding previously encoded blocks, which are then used to predict other blocks. Decoding operations that affect prediction are performed at both the decoder and the encoder, within what is called a “coding loop.” Additional operations can optionally be performed by the decoder after the coding loop, including what is called “post-filtering” or “post-loop filtering.” For example, post-filtering can include application of a deblocking filter. The deblocking process mitigates artifacts in the reconstructed video caused by the blocks (e.g., near block boundaries), and can involve filtering within the coding loop, outside the coding loop, or both. Frame-based adaptive post-filtering can be included after the deblocking process to further improve the reconstruction quality by reducing quantization noise. Filtering based on characteristics of the video data is called “adaptive” filtering.